
function [BW, Y, X, Z] = detect_beads_LS(LS)

%这段代码的核心是利用高斯差分（DoG）来增强三维图像中的珠状结构，并结合局部最小值检测来定位这些结构。
% 它的实现包括预处理、区域掩码设定、多尺度模糊和局部特征提取等步骤，适合于检测图像中的亮度突出、呈点状的目标物。

LS = double(LS);
k = [3, 3, 3];  %用于控制高斯核的比例因子，表示在不同尺度下的高斯模糊参数调整
sigma = [12,12,12]; %初始高斯模糊的标准差，对应三个维度（X、Y、Z）的模糊程度

blur1 = imgaussfilt3(LS, sigma);  %模糊后的图像存储在变量 blur1 中，主要作用是减少噪声
BW = zeros(size(LS));
BW(100:end-200, 200:end-100, 19:end-19) = 1;  %指定一个感兴趣的体积范围，排除边界区域的可能噪声
BW(LS<mean(LS(:))) = 0;  %进一步排除背景噪声和低强度区域，只保留可能感兴趣的区域


%进一步细化掩码，保留可能的珠状结构
for scale = 1:1
    sigma = k.^scale .* sigma;  %更新每个维度的高斯标准差
    blur2 = imgaussfilt3(LS, sigma); 
    DoG = blur2 - blur1; %通过高斯差分图像增强珠状结构的边缘特征，同时抑制平坦区域

    %与当前掩码 BW 按位与运算，只保留在当前掩码内且是 DoG 局部最小值的位置
    BW = BW & imregionalmin(DoG);   %检测 DoG 中的局部最小值，返回一个与 DoG 大小相同的二值矩阵，局部最小值位置为 1，其余为 0

    blur1 = blur2;  %更新变量为下一次循环准备
end


I = find(BW ~= 0);
[Y, X, Z] = ind2sub(size(BW),I);


end